package br.unicamp.ic.inf300.arena.modelo.vendas;
/**
 * ArenaTicketMain - Venda de Bilhetes Eletronicos para Espetaculos (Arena Entretenimento S.A.)
 * Pagamento.java
 */


public abstract class Pagamento {
	public static final int TIPO_VALE_ENTRADA = 0;
	public static final int TIPO_CARTAO = 1;

	private int codpagto;
	private int tipo;
	private double valor;

	public Pagamento() {
		super();
	}

	public Pagamento(int tipo) {
		super();
		this.tipo = tipo;
	}	

	public static String obterDescricaoTipoPagamento(int tipo) {
		String strDescricao = "";
		switch (tipo) {
		case TIPO_VALE_ENTRADA:
			strDescricao = " Vale ";
			break;
		case TIPO_CARTAO:
			strDescricao = " Cart\u00e3o ";
			break;
		default:
			break;
		}
		return strDescricao;
	}

	/**
	 *
	 * @param tipo
	 * @param valor
	 */
	public Pagamento(int tipo, double valor) {
		super();
		this.tipo = tipo;
		this.valor = valor;
	}

	/**
	 * 
	 * @param codpagto
	 * @param tipo
	 * @param valor
	 */
	public Pagamento(int codpagto, int tipo, double valor) {
		super();
		this.codpagto = codpagto;
		this.tipo = tipo;
		this.valor = valor;
	}

	public int getCodpagto() {
		return codpagto;
	}

	public void setCodpagto(int codpagto) {
		this.codpagto = codpagto;
	}

	public int getTipo() {
		return tipo;
	}

	public void setTipo(int tipo) {
		this.tipo = tipo;
	}

	public double getValor() {
		return valor;
	}

	public void setValor(double valor) {
		this.valor = valor;
	}

	/**
	 * @return <code>String</code>
	 * JUtils plugin ;-)
	 */
	public String toString()
	{
	    final String TAB = "    ";
	    
	    StringBuffer retValue = new StringBuffer();
	    
	    retValue.append("Pagamento ( ")
	        .append(super.toString()).append(TAB)
	        .append("codpagto = ").append(this.codpagto).append(TAB)
	        .append("tipo = ").append(this.tipo).append(TAB)
	        .append("valor = ").append(this.valor).append(TAB)
	        .append(" )");
	    
	    return retValue.toString();
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + codpagto;
		result = prime * result + tipo;
		long temp;
		temp = Double.doubleToLongBits(valor);
		result = prime * result + (int) (temp ^ (temp >>> 32));
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		final Pagamento other = (Pagamento) obj;
		if (codpagto != other.codpagto)
			return false;
		if (tipo != other.tipo)
			return false;
		if (Double.doubleToLongBits(valor) != Double
				.doubleToLongBits(other.valor))
			return false;
		return true;
	}
}